package mysql

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/schema"
	"gorm.io/plugin/opentelemetry/tracing"
)

func InitDatabase(dsn string) *gorm.DB {
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		NamingStrategy: schema.NamingStrategy{},
	})
	if err != nil {
		panic(err)
	}
	if err = db.Use(tracing.NewPlugin()); err != nil {
		panic(err)
	}
	dbSet, err := db.DB()
	if err != nil {
		panic("failed to get underlying sql.DB")
	}
	// 设置连接池参数
	dbSet.SetMaxIdleConns(30)    // 最大空闲连接数
	dbSet.SetMaxOpenConns(10000) // 最大打开连接数
	return db
}
